package clasesJuego;

import java.io.BufferedReader;
import java.io.InputStreamReader;

import java.util.*;


import utiles.FactoriaDeColecciones;




public class InterfazDeUsuario {
	
	public static Jugador elegirJugador(List<Jugador> s){
		
		List<Jugador> lisjug=FactoriaDeColecciones.creaList();
		Integer ind=0;
		Jugador jug;
		String nom;
		Iterator<Jugador> itsjug= s.iterator();
		while(itsjug.hasNext()){
			jug=(Jugador)itsjug.next();
			nom=jug.getNombreJu();
			lisjug.add(jug);
			System.out.println("Seleccione "+ind+" para el jugador:"+nom);
			ind++;
		}

		//Con el siguiente codigo cogemos la opcion seleccionada por el jugador			
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		Integer seljug=0;
		try {
			//en este caso cogemos un string que es el nombre del jugador
			String nJug = br.readLine();
			seljug= Integer.parseInt(nJug);
		} catch (Exception e) {	
			
		}
		//aki termina el fragmento de codigo para coger informacion externa
		
		Jugador selec= lisjug.get(seljug);
		

		return selec;

	}
	
	public static Camara eligeCamara(List<Camara> cam){
		
		List<Camara> lisCam=FactoriaDeColecciones.creaList();
		Integer indCam=0;
		Camara c;
		String nomCam;
		Iterator<Camara> itsCam= cam.iterator();
		while(itsCam.hasNext()){
			c=(Camara)itsCam.next();
			nomCam=c.getNombre();
			lisCam.add(c);
			System.out.println("Seleccione "+indCam+" para el jugador:"+nomCam);
			indCam++;
		}

		//Con el siguiente codigo cogemos la opcion seleccionada por el jugador			
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		Integer selCam=0;
		try {
			//en este caso cogemos un string que es el nombre del jugador
			String nCam = br.readLine();
			selCam= Integer.parseInt(nCam);
		} catch (Exception e) {	
			
		}
		//aki termina el fragmento de codigo para coger informacion externa
		
		Camara selec= lisCam.get(selCam);
		

		return selec;

	}

	public static List<Integer> seleccionaRotacion(List<List<Integer>> lis){
		
		Integer post=1;
		
		Iterator<List<Integer>> itlis=lis.iterator();
		while(itlis.hasNext()){
			List<Integer> l=itlis.next();
			System.out.println("Seleccione" +post+ "para el giro:"+l);
			post++;
		}

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		Integer posGiro =0;
		List<Integer> ls;
		try {
			String sel = br.readLine();
			posGiro = Integer.parseInt(sel);
		} catch (Exception e) {	}
		
		ls=lis.get(posGiro);

		return ls;

	}
	
	public static void crearJugadores(Set<Personaje> pe, Partida part){
	
		System.out.println("Seleccione el numero de jugadores:");

		BufferedReader brJ = new BufferedReader(new InputStreamReader(System.in));
		Integer numJug=0;
		String seln=null;
		try {
			seln = brJ.readLine();
			numJug = Integer.parseInt(seln);
		} catch (Exception e) {
			//Tratamiento de fallos
		}
		
		String nombJug;
		Personaje pers;
		List persons=FactoriaDeColecciones.creaList();
		
		for (int i=1;i<=numJug;i++){
			
			System.out.println("Jugador "+i+" introduzca su nombre:");
			nombJug=escribeNombreJugador(i);
			System.out.println( nombJug+"elija el personaje que desee:");
			pers=elegirPersonaje(pe);
			persons.add(i-1,new Jugador(nombJug,pers));
		}
		
		part.setJugadores(persons);
	}
	
	public static Personaje elegirPersonaje(Set<Personaje> pe){
		
		List<Personaje> lisPe=FactoriaDeColecciones.creaList();
		Integer indPe=0;
		Personaje person;
		String nomPer;
		Iterator<Personaje> itsPer= pe.iterator();
		while(itsPer.hasNext()){
			person=(Personaje)itsPer.next();
			nomPer=person.getNombre();
			lisPe.add(person);
			System.out.println("Seleccione "+indPe+" para el jugador:"+nomPer);
			indPe++;
		}
			
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		Integer selPer=0;
		try {
			String nPer = br.readLine();
			selPer= Integer.parseInt(nPer);
		} catch (Exception e) {	
			//Tratamiento de fallos
		}
		
		Personaje selecPer= lisPe.get(selPer);
		
		return selecPer;
		
	}
	
	public static String escribeNombreJugador(Integer num){
	/*Leemos del teclado la informacion del usuario, por defecto el nombre es el
	 * numero de jugador que tiene asignado.
	*/
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String nombreJug=String.valueOf(num);
		try {
			nombreJug = br.readLine();
		} catch (Exception e) {	
			//Tratamiento de fallos
		}
		
		return nombreJug;
		
	}
	
	public static Moneda eligeMoneda(List<Moneda> manoMoneda){

		Integer indMoneda=1;
		Iterator itmon= manoMoneda.iterator();
		Moneda mon;
		while(itmon.hasNext()){
			mon=(Moneda)itmon.next();
			System.out.println("Seleccione "+indMoneda+" para la moneda:"+mon.getValor());
			indMoneda++;
		}
		BufferedReader brr = new BufferedReader(new InputStreamReader(System.in));
		Integer elec=0;
		Moneda monselec;
		try {
			String msel = brr.readLine();
			elec = Integer.parseInt(msel);
		} catch (Exception e) {	
			//Tratamiento de errores
		}
		
		monselec=manoMoneda.get(elec);
		/*Aki hay que poner un tratamiento dependiendo de donde se elija la moneda, es
		 * decir, hay que eliminar la moneda elegida del sitio de donde se ha cogido
		*/
		return monselec;
	}
	public static Integer eligeOpcion(){
		//elige si el jugador mueve el personaje o pone camara
		System.out.println("Seleccione 0 para mover personaje o 1 para poner camara:");
		
		BufferedReader brr = new BufferedReader(new InputStreamReader(System.in));
		Integer elec=0;
		try {
			String msel = brr.readLine();
			elec = Integer.parseInt(msel);
		} catch (Exception e) {	
			//Tratamiento de errores
		}
		
		return elec;
	}
}
